Skip to main content

Create transaction


POST /api/distributor

This POST method enables integrators to create payment transactions for distributing funds to designated recipients.

Authentication

This endpoint requires an OAuth 2.0 Bearer Token. Pass the access_token obtained from the authentication flow in the Authorization header:

Authorization: Bearer <access_token>

Request details

Body parameters

ParameterTypeRequiredDescriptionPossible ValuesNote
amountnumberTotal payment amount to be transferred.Positive decimal, max 10 digits with up to 2 decimals (e.g., 1000.50)Must be greater than 0.
currencystringCurrency in which the transaction will be processed.GEL, USD, EUR
descriptionstringNarrative text describing the purpose of the payment. This will appear in the beneficiary's bank statement.Alphanumeric + Georgian characters + symbols /\-?:().,'+
beneficiaryIdentityNumberstringOfficial identity number of the beneficiary (individual or company).
beneficiaryNamestringFull legal name of the beneficiary.Should match recipient's bank records.
beneficiaryAddressstringPhysical or registered address of the beneficiary.
toIbanstringInternational Bank Account Number (IBAN) of the beneficiary.Must be a valid Georgian IBAN if provided.
receiverIdstring (UUID v4 format)Unique identifier of the receiver within the Keepz system.Example: 123e4567-e89b-12d3-a456-426614174000
receiverTypestringSpecifies whether the beneficiary is an individual or a business.BRANCH, USER
birthDatestringDate of birth of the beneficiary.Format: dd.MM.yyyy
uniqueIdstring (UUID v4 format)Unique identifier of the transaction provided by the client.Ensures idempotency (prevents duplicate payment execution).
debtorNamestringFull legal name of the payer. Must match regex: ^[a-zA-Z0-9/\\-?:().,'+აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰ ]+$. Appears in the bank description only.This field can only be sent by integrators who have been granted explicit permission by Keepz.
debtorIbanstringIBAN of the payer. Appears only in the bank description; funds are not debited from this account. Must match regex: ^GE\\d{2}[A-Z]{2}\\d{16}$.This field can only be sent by integrators who have been granted explicit permission by Keepz.
debtorIdentityNumberstringIdentity number of the payer. Appears in the bank description only.9 or 11 digitsThis field can only be sent by integrators who have been granted explicit permission by Keepz.
fromIbanstringIBAN from which the payment amount will actually be debited. Must match regex: ^GE\\d{2}[A-Z]{2}\\d{16}$.This field can only be sent by integrators who have been granted explicit permission by Keepz.

Note on Recipient Identification

The fields receiverId, receiverType, and toIban are mutually exclusive, depending on the distributor configuration:

To-IBAN transfers: Use toIban to specify the beneficiary's bank account directly.

To-Receiver transfers: Use receiverId together with receiverType if the integrator is configured to send funds to a registered Keepz receiver.

If the integrator provides receiverId and receiverType, the system will resolve the recipient internally and the toIban field is not required. Conversely, if toIban is provided, receiverId and receiverType should be omitted.

This flexibility allows integrators to either reference a known Keepz receiver or specify an IBAN directly, depending on their integration setup.

Example:

{
"amount": 1000,
"currency": "GEL",
"description": "Test payment",
"toIban": "GE34TB0000000000000000",
"beneficiaryName": "Giorgi Giorgadze",
"uniqueId": "123e4567-e89b-12d3-a456-426614174000"
}

Response details

✅ Success Response

If the request is valid, the API returns next payload:

ParameterTypeDescriptionPossible ValuesNote
transactionIdnumberUnique identifier of the transaction in the system.Returned by the server after transaction creation.
statusstringCurrent status of the transaction.Current status of the transaction. See Transaction Status Codes.
statusDescriptionstringHuman-readable description of the transaction status.Provides more context for the status.
uniqueIdstring (UUID v4)Unique identifier of the transaction provided by the client.Matches uniqueId from request to ensure idempotency.
createdAtstring (ISO 8601 datetime)Timestamp when the transaction was created.Example: 2025-08-25T12:34:56.789Z
❌ Error Response

If an error occurs, the API returns next payload:

{
"message": "Transaction with such unique ID already exists",
"statusCode": 5017
}
ParameterTypeDescription
messagestringError message. Details are provided in the dedicated section below.
statusCodenumberError status code. Details are provided in the dedicated section below.

⚠️ Important: Make sure to include the Bearer token in the Authorization header for all requests. The uniqueId must be unique to ensure idempotency and prevent duplicate transactions.

Details can be found at Error Code Description.